package com.itedge.infrastructure.taskdata;

import java.util.Date;

import com.itedge.infrastructure.domain.IEntity;

/**
 * Interface for task data Entities, extends {@link IEntity} interface.
 * 
 * @author jhe
 *
 */
public interface ITaskDataEntity extends IEntity {
	
	/**
	 * Set version field, this method is required because of programmatic merging of task data Entities.
	 *
	 * @param version
	 */
	public void setVersion(Integer version);
	
	/**
	 * Set id field, this method is required because of programmatic merging of task data Entities.
	 *
	 * @param id
	 */
	public void setId(Long id);
    
	/**
	 * Get task instance id reference.
	 * 
	 * @return id of linked task instance
	 */
	public String getTaskId();
	
	/**
	 * Set task instance id reference.
	 * 
	 * @param id
	 */
	public void setTaskId(String id);
	
	/**
	 * Get actor which last updated task data entity.
	 * 
	 * @return actor who last updated task data entity
	 */
	public String getLastUpdatedBy();

	/**
	 * Set actor which last updated task data entity.
	 * 
	 * @param lastUpdatedBy
	 */
	public void setLastUpdatedBy(String lastUpdatedBy);

	/**
	 * Get Date when task data entity was last updated.
	 * 
	 * @return date when task data entity was last updated
	 */
	public Date getLastUpdatedDate();

	/**
	 * Set Date when task data entity was last updated.
	 * 
	 * @param lastUpdatedDate
	 */
	public void setLastUpdatedDate(Date lastUpdatedDate);

	/**
	 * Get actor which locked task data entity.
	 * 
	 * @return actor who last locked task data entity
	 */
	public String getLockedBy();

	/**
	 * Set actor which locked task data entity.
	 * 
	 * @param lockedBy
	 */
	public void setLockedBy(String lockedBy);

}
